package com.shujia;

import java.util.HashMap;

public class Demo01HelloWorldJava {
    public static void printHelloStatic() {
        System.out.println("Hello Java Static!");
    }

    public void printHello() {
        System.out.println("Hello Java!");
    }

    /**
     * com.shujia.Demo01HelloWorldJava.java代码是如何在JVM中运行的
     * 首先需要编译成Demo01HelloWorldJava.class字节码文件
     * 然后就可以被JVM加载，JVM同时可以加载很多.class文件，那么如何区分？
     * 通过不同的类名进行区分，实际上代码以类名的方式加载到JVM中，称之为 类对象
     * 类对象和类的对象？
     * 类对象：就是代码被加载到JVM中的形式
     * 类的对象：通过new关键字进行实例化的
     * 静态方法、静态属性都可以直接通过类对象进行调用
     * 成员属性、成员方法需要通过类的对象进行调用
     * <p>
     * main方法是静态的，实际上就是由类对象进行调用的
     */
    public static void main(String[] args) {
        System.out.println("Hello World Java!");
        // 静态方法可以通过类名.方法名直接调用
        Demo01HelloWorldJava.printHelloStatic();
        // 成员方法需要通过new 类的对象，通过对象进行调用
        new Demo01HelloWorldJava().printHello();
        // 手动调用静态的main方法 自己调用自己 会进行递归 没有停止条件 最终StackOverflowError
//        com.shujia.Demo01HelloWorldJava.main(args);

        // 在Java中创建Scala的类的对象
//        Demo01HelloWorld demo01HelloWorld = new Demo01HelloWorld();
//        demo01HelloWorld.printHello();

        String str1 = "123";
        // Java中如果需要进行类型转换，则需要使用包装类
        int str2Int = Integer.parseInt(str1);
        System.out.println(str2Int);

        // 使用Java代码完成WordCount

        HashMap<String, String> map = new HashMap<>();
        map.put("word1", "a,b,c,e,f");
        map.put("word2", "a,b,c,e");
        map.put("word3", "a,b,c");
        String word1 = map.get("word1");
        System.out.println(word1.split(",").length);

        String wordN = map.get("wordN");
//        System.out.println(wordN.split(",").length);


    }
}
